import javax.swing.*;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import layout.TableLayout;

/**
* @file JLevelPanel.java
*
* @brief Diese Datei enthält die JLevelPanel-Klasse.
*
* @author Alrik Künne
*
* @date 01.06.2012 - erste Version
* @date 19.06.2012 - einige Veränderungen, Multi-Threading
**/

/** 
* @class JLevelPanel
* 
* @brief in diesem Panel wird für eine Etage die Ruftasten dargestellt
* 
* Das Panel wird mehrfach erzeugt und übereinander angeordnet
*/ 
@SuppressWarnings("serial")
public class JLevelPanel extends JPanel{
	JButton Up;
	JButton Down;
	
	/**
	* @brief Die Methode die die Bilder streamt
	*
	* @param floorNumber - Die Nummer der Etage, beginnend bei 0
	* @param endPoint - das Endpunktflag
	*
	* endPoint=0 beide Tasten werden angezeigt<br/>
	* endPoint>0 nur die Runter-Taste wird angezeigt<br/>
	* endPoint<0 nur die Hoch-Taste wird angezeigt<br/>
	* 
	*/
	 private byte[] resourceToByteArray(String resName) throws IOException { 
	      ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); 
	      InputStream           iresStream = JLevelPanel.class.getResourceAsStream(resName); 
	      int                   bytesRead = 0; 
	      byte[]                tmp = new byte[4096]; 

	      while ( (bytesRead = iresStream.read(tmp, 0, 4096)) > -1 ) 
	        byteStream.write(tmp, 0, bytesRead); 
	          
	      iresStream.close(); 
	      // JDocs: "Closing a ByteArrayOutputStream has no effect." 

	      return byteStream.toByteArray(); 
	    } 
	
	
/**
* @brief Der Konstruktor mit zwei Paramtern
*
* @param floorNumber - Die Nummer der Etage, beginnend bei 0
* @param endPoint - das Endpunktflag
*
* endPoint=0 beide Tasten werden angezeigt<br/>
* endPoint>0 nur die Runter-Taste wird angezeigt<br/>
* endPoint<0 nur die Hoch-Taste wird angezeigt<br/>
* 
*/
	public JLevelPanel(int floorNumber, int endPoint)
	{
		//* Größe
		setPreferredSize( new Dimension( 150, 80 ) );
		setMinimumSize(new Dimension(150,80));
		//Layout
		double[][] mlayout = new double[][]{
		        // X-Achse
				{0.5, 50,50 ,0.5},
				{ TableLayout.FILL}
		    };
		setLayout(new TableLayout(mlayout));
		
		setBorder(BorderFactory.createEmptyBorder(20,10,20,10));
		//* Komponenten
		JPanel switchPanel = new JPanel();
		
		ImageIcon iconup=null;
		ImageIcon icondown=null;
			try {
				iconup = new ImageIcon( resourceToByteArray("images/up.png"));
				icondown = new ImageIcon( resourceToByteArray( "images/down.png"));
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			

		
		if(endPoint <= 0){
			Up=new JButton(iconup);
			add(Up,"1,0");
		}
		if(endPoint >= 0){
			Down=new JButton(icondown);
			add(Down,"2,0");	
		}
		
		switchPanel.setBorder(BorderFactory.createEmptyBorder(0,0,0,10));
		
		
		//* Hintergrundfarbe
		if(floorNumber % 2!=0)
		{		
			setBackground(Color.white);
			switchPanel.setBackground(Color.white);
		}
		else
		{
			setBackground(Color.lightGray);	
			switchPanel.setBackground(Color.lightGray);
		}
		
	}
}
